package com.quwan.common.service.oss;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author lt
 * @version 1.0.0
 * 2019/12/18 14:17
 */
public interface IObjectStorageStrategy {
    /**
     * 创建client实例
     */
    void createClient();

    /**
     * 关闭OSSClient实例
     */
    void closeClient();

    /**
     * 根据key读取文件
     *
     * @param key
     * @return
     */
    byte[] getByteArrayByKey(String key);

    /**
     * MultipartFile上传
     *
     * @param multipartFile
     * @param fileKey
     * @return
     */
    boolean storeFile(MultipartFile multipartFile, String fileKey);

    /**
     * File上传
     *
     * @param file
     * @param fileKey
     * @return
     */
    boolean storeLocalFile(File file, String fileKey);

    /**
     * 流上传
     *
     * @param inputStream
     * @param fileKey
     * @return
     */
    boolean storeFileInputStream(InputStream inputStream, String fileKey);

    /**
     * 清除已上传的文件
     *
     * @param fileKeyList
     * @return
     */
    boolean removeFileListByKeyList(List<String> fileKeyList);

    /**
     * 下载文件到本地
     *
     * @param fileName
     * @return
     */
    File getFile(String fileName, String localFile) throws IOException;
}
